/*
 * Main.java
 * Clase que crea un nuevo objeto GUI y GestorBaseDeDatos y carga
 * las bases de datos.
 * Ana Silvia Gonzales Torres 10194
 * Diego Alejandro Enriquez Rodriguez 10038
 */
package main;

import gestor.base.de.datos.GestorBaseDeDatos;
import gui.GUI;
import java.util.*;

/**
 *
 * @author Ana Silvia Gonzáles
 * @author Diego Enríquez
 */
public class Main {
    
    private static GestorBaseDeDatos gestor;
    
    public static void main(String args[]) throws Exception {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
            }
        });
        
        
        gestor=new GestorBaseDeDatos();
        /*gestor.createDataBase("BasePrueba");
        if(gestor.saveDataBase("BasePrueba")) {
            System.out.print("BASE DE DATOS GUARDADA");
        }
        else {
            System.out.print("BASE DE DATOS NO GUARDADA");
        }*/
        /*if(gestor.setCurrent("BasePrueba"))
        {
            /*gestor.getCurrent().addTable("tabla1");
            gestor.getCurrent().addTable("lalala");
            gestor.getCurrent().getTable("tabla1").addColumn("Col1", "FLOAT");
            gestor.getCurrent().getTable("tabla1").addColumn("Col2", "FLOAT");
            ArrayList<String> fila=new ArrayList<>();
            fila.add("1.1");
            fila.add("1.2");
            gestor.getCurrent().getTable("tabla1").insert(null,fila);
            gestor.getCurrent().getTable("lalala").addColumn("Col3", "FLOAT");
            gestor.getCurrent().getTable("lalala").addColumn("Col4", "FLOAT");
            fila=new ArrayList<>();
            fila.add("2.3");
            fila.add("2.4");
            gestor.getCurrent().getTable("lalala").insert(null,fila);
            System.out.println(gestor.showTables());
            System.out.println(gestor.showTable("lalala"));
            System.out.println(gestor.showTable("tabla1"));*/
            
            /*ArrayList<String> campos=new ArrayList<>();
            campos.add("Col1");
            campos.add("Col3");
            campos.add("Col2");
            
            ArrayList<String> tabl=new ArrayList<>();
            tabl.add("tabla1");
            tabl.add("lalala");
            
            Stack<String>[] condiciones=new Stack[2];
            condiciones[0]=new Stack();
            condiciones[1]=new Stack();
            
            condiciones[0].push("3");
            condiciones[0].push("'COL3'");
            condiciones[0].push(">");
            
            
            condiciones[1].push("FLOAT");
            condiciones[1].push("COLUMNA");
            condiciones[1].push("OTRO");
            
            Stack<String>[] order=new Stack[2];
            order[0]=new Stack();
            order[1]=new Stack();
            
            order[0].push("COL1");
            order[1].push("ASC");
            
            gestor.base.de.datos.Table extra=gestor.select(campos, tabl,condiciones,order);
            
            System.out.println(extra.showTable());*/
            
            /*fila=new ArrayList<>();
            fila.add("2.5");
            fila.add("2.6");
            gestor.getCurrent().getTable("lalala").insert(null,fila);
            fila=new ArrayList<>();
            fila.add("5.0");
            fila.add("4.2");
            gestor.getCurrent().getTable("lalala").insert(null,fila);
            System.out.println(gestor.showTable("lalala"));
            System.out.println(gestor.showTable("tabla1"));
            */
            
            /*Stack<String>[] condiciones=new Stack[2];
            condiciones[0]=new Stack();
            condiciones[1]=new Stack();
            
            condiciones[0].push("3");
            condiciones[0].push("'COL4'");
            condiciones[0].push("<");
            
            
            condiciones[1].push("FLOAT");
            condiciones[1].push("COLUMNA");
            condiciones[1].push("OTRO");
            

            ArrayList<String> values=new ArrayList<>();
            values.add("0");
            values.add("4");
            ArrayList<String> colu=new ArrayList<>();
            colu.add("COL3");
            colu.add("COL4");
            
            System.out.println(gestor.update("LALALA", values, colu, condiciones));*/
            
            /*fila=new ArrayList<>();
            fila.add("1.23");
            ArrayList<String> cols=new ArrayList<>();
            cols.add("COL4");
            gestor.getCurrent().getTable("lalala").insert(cols,fila);*/
            
            
            
            /*Stack<String>[] condiciones=new Stack[2];
            condiciones[0]=new Stack();
            condiciones[1]=new Stack();
            
            condiciones[0].push("'COL3'");
            condiciones[0].push("NULL");
            condiciones[0].push("=");
            
            
            condiciones[1].push("COLUMNA");
            condiciones[1].push("FLOAT");
            condiciones[1].push("OTRO");
            
            System.out.println(gestor.deleteRegistro("LALALA", condiciones));*/
            //System.out.println(gestor.showTable("lalala"));
            
            
            /*if(gestor.saveDataBase("BasePrueba")) {
                System.out.println("Base de datos Guardada");
            }
            else {
                System.out.println("Base de Datos no Guardada");
            }
        }
        else {
            System.out.println("No cambio current");
        }*/
            
        
    }

    public static GestorBaseDeDatos getGestor() {
        return gestor;
    }
    
}
